二维数组A[10][20]采用行序为主方式存储,每个单元占1个存储单元...

来源:百度知道 编辑:UC知道 时间:2024/05/22 19:05:27
二维数组A[10][20]采用行序为主方式存储,每个单元占1个存储单元,并且
A[0][0]的存储地址是200,则A[6][12]的地址是_____?
希望能给出过程,谢谢了。

332,
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 A[0]
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 A[1]
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 A[2]
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 A[3]
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 A[4]
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 A[5]
0 1 2 3 4 5 6 7 8 9 10 11 12 ←←旁边这个就是A[6][12]
第一个零的地址是200,在它的基础上A[0][0]第一括号里每加1,地址就加20,第2个括号里加几,地址就加几,然后就得到A[6][12]的地址为332

行序为主方式存储就是按顺序先把一行存储满后再换下一行,列序为主方式存储就是按顺序先把一列存储满后再换下一行。
对于行序为主,A[i][j]地址计算方法为:从0开始,A[i][j]表示第0行,第1行,....,一直到第i-1行都存储满了,占有的存储单元为i*n*k,而第i行只有j+1(从0开始)个元素,占有的存储单元为(j+1)*k,因此总共占有的存储单元为i*n*k+(j+1)*k=(i*n+j)*k+k,注意到第一个元素的存储地址是LOC(A[0][0]),从A[0][0]算起,因此要减去多算的第一个元素的一个存储单元,总共占有的存储单元为(i*n+j)*k
A[i][j]的地址为:LOC(A[0][0])+(i*n+j)*k
你将i=6,j=12,n=20,k=1代入就得332